package com;

public class Test0 {
    public static void main(String[] args) {


        Node<Integer> first = null;
        //用来记录前一个结点
        Node<Integer> pre = null;

        int m = 58;
        for(int i = 1; i<=m; i++){
            //如果是第一个结点
            if(i==1){
                first = new Node<>(i,null);
                pre = first;
                continue;
            }
            //如果不是第一个结点
            Node<Integer> newNode = new Node<>(i,null);
            pre.next = newNode;
            pre = newNode;
            if(i==m){
                pre.next = first;
            }
        }

        //2.需要count计数器，模拟报数
        int count = 0;
        Node n = first;
        //记录当前结点的上一个结点
        Node<Integer> before = null;
        while(n!=n.next){
            //模拟报数
            count++;
            //判断当前报数是不是为5
            if(count==5){
                //如果是5，则把当前结点删除调用，
                before.next = n.next;
                System.out.print(n.item+",");
                count = 0;
                n=n.next;
            }else{
                //如果不是5，让before变为当前结点，让当前结点后移；
                before = n;
                n = n.next;
            }
        }
        //打印最后一个元素
        System.out.println(n.item);
    }


    //结点类
    private static class Node<T> {
        //存储数据
        T item;
        //下一个结点
        Node next;

        public Node(T item, Node next) {
            this.item = item;
            this.next = next;
        }
    }
}


